package de.tudarmstadt.ukp.muip.fibqdojo.interfaces;

/**
 * A sentence token wraps a token and provides additionally an zero relative
 * index of the token in the sentence. A sentence token can be marked for being
 * replaced by a bank. It is implicated that each sentence has one or none
 * tokens or the first occurence is considered for processing, respectively. The
 * tokens can be marked for simplification. Subsequently processing components
 * may ignore the marked or simplified flag.
 * 
 * @author Tobias Horsmann
 */
public interface IFIBQSentenceToken extends IFIBQToken {

    /**
     * Returns the position of a token in the sentence with the first token
     * being at index 0
     */
    Integer getSentencePosition();

    /**
     * Returns <code>true</code> if this token is marked for being replaced by a
     * blank.
     * 
     * @return boolean
     */
    boolean isMarkedBlank();

    /**
     * (Un-)Sets a token to be replaced by a blank
     * 
     * @param blank
     */
    void setBlank(boolean blank);

    /**
     * Returns <code>true</code> if this token shall be used in a simplified
     * version in subsequent processing steps. It is up to the implementation of
     * subsequent components to consider or ignore the token and determine a
     * suited simplification.
     * 
     * @return
     */
    boolean isMarkedSimplifed();

    /**
     * (Un-)sets a token as simplified.
     */
    void setSimplify(boolean simplify);

}
